package com.inspur.edp.metadata.rtcustomization.servermanager;

import com.inspur.edp.metadata.rtcustomization.serverapi.MetadataFileService;
import io.iec.edp.caf.commons.file.hash.FileHashStorage;
import io.iec.edp.caf.commons.file.hash.factory.FileHashStorageFactory;

/**
 * 元数据文件服务
 * 将元数据文件保存到指定目录，并读取指定目录下的元数据文件
 * 当前包元数据、idp元数据可以保存到文件中，暂无删除场景
 *
 * @author liangff
 * @since 0.1.0
 * 2024/12/6
 */
public class MetadataFileServiceImpl implements MetadataFileService {

    /**
     * 获取元数据文件内容
     *
     * @param metadataId     元数据id
     * @param directoryPath  元数据文件目录
     * @return 元数据文件内容
     */
    @Override
    public String get(String metadataId, String directoryPath) {
        return getFileHashStorage(directoryPath).get(metadataId);
    }

    /**
     * 保存元数据文件内容
     *
     * @param metadataId     元数据id
     * @param directoryPath  元数据文件目录
     * @param content        元数据文件内容
     */
    @Override
    public void save(String metadataId, String directoryPath, String content) {
        getFileHashStorage(directoryPath).save(metadataId, content);
    }

    /**
     * 删除元数据文件
     *
     * @param metadataId     元数据id
     * @param directoryPath  元数据文件目录
     */
    @Override
    public void delete(String metadataId, String directoryPath) {
        getFileHashStorage(directoryPath).delete(metadataId);
    }

    /**
     * 获取元数据文件存储实例
     * 获取caf文件存储实例
     *
     * @param directoryPath  元数据文件目录
     * @return 元数据文件存储实例
     */
    private FileHashStorage getFileHashStorage(String directoryPath) {
        return FileHashStorageFactory.localStorageInstance(directoryPath);
    }
}
